{
  //为类型设置一个别名
  type num = number;

  //声明一个变量
  let n: num = 521;

  //声明接口
  interface Test{
    a: number;
    b: string;
  }

  // 声明一个别名
  type t = Test;

  let o:t = {
    a: 100,
    b: 'abc'
  }

  //获取变量 n 的类型
  type nType = typeof n;
  
  //接口
  interface Phone{
    brand: string;
    price: number;
    color: string;
  }

  type PhoneKeysType = keyof Phone; // brand | price | color

  //声明一个函数 获取对象属性的值
  function getValueOfObject(obj: Phone, key: PhoneKeysType){
    console.log(obj[key]);
  }

  //声明一个对象
  let mate50: Phone = {
    brand: '华为',
    price: 6799,
    color: '灰色'
  }
  // getValueOfObject(mate50, 'color');

  //获取函数的类型
  type FnType = typeof getValueOfObject;

  //获取函数返回值的类型
  type retType = ReturnType<FnType>;

  //获取函数参数的类型
  type paramsType = Parameters<FnType>;


}